package com.Reactor3参考文档;

import reactor.core.publisher.Flux;

/**把当前流中的元素收集到集合中，并把集合对象作为流中的新元素
 * @author zhangsulei
 *
 */
public class BufferDemo {

	public static void main(String[] args) {
		// 转换为5个list，每次list里面10个元素
		Flux.range(1, 50).buffer(10).subscribe(System.out::println);
		System.out.println("=========");

		// 会一直收集元素，直到断言条件返回true。使得断言条件返回true的那个元素可以选择添加到当前集合或下一个集合中
		Flux.range(1, 10).bufferUntil(i -> i % 2 == 0).subscribe(System.out::println);
		System.out.println("=========");

		// 只有当断言条件返回true时才会收集，一旦值为false，会立即开始下一次收集。
		Flux.range(1, 10).bufferWhile(i -> i % 2 == 0).subscribe(System.out::println);
		System.out.println("=========");
	}

}
